Cette leçon explique comment passer à d'autres comptes à l'aide de la commande sudo.
Une autre façon de changer d'utilisateur ou d'exécuter des commandes en tant qu'autres est d'utiliser la commande sudo. La syntaxe de la commande sudo est la suivante:
sudo command
La commande sudo vous permet d'exécuter des programmes avec les privilèges de sécurité d'un autre utilisateur. Comme su, si aucun nom d'utilisateur n'est spécifié, il suppose que vous essayez d'exécuter des commandes en tant que superutilisateur. C'est pourquoi sudo est appelé superuser do.
Il est généralement utilisé pour installer, démarrer et arrêter des applications qui nécessitent les privilèges de l'utilisateur root. L'un des avantages de l'utilisation de sudo par rapport à la commande su est que vous n'avez pas besoin de connaître le mot de passe de l'autre utilisateur. Cela peut éliminer certains problèmes liés à l'utilisation de mots de passe partagés dans des comptes génériques. Lorsque vous exécutez la commande sudo, vous êtes invité à saisir votre mot de passe. Si la configuration sudo autorise l'accès, cette commande est exécutée.
La configuration sudo est généralement contrôlée par l'administrateur système et nécessite un accès root pour être modifiée. Bien entendu, sur votre système personnel, vous avez accès au compte root, et vous êtes donc également l'administrateur système.
Pour voir les commandes que vous pouvez exécuter avec sudo, utilisez sudo -l. Pour exécuter une commande en tant qu'utilisateur root, utilisez la commande sudo. Vous pouvez spécifier un utilisateur avec -u, par exemple la commande sudo -u root est identique à la commande sudo. Cependant, si vous voulez exécuter une commande en tant qu'autre utilisateur, vous devez le spécifier avec -u. Ainsi, par exemple, la commande sudo -u nikki.
Commands | Meaning |
sudo -l | List available commands. |
sudo command | Run command as root. |
sudo -u root command | Run command as root. |
sudo -u user command | Run command as user. |
You can use sudo su to switch to the superuser account. You can use sudo su - to switch to the superuser account with root's environment. The sudo su - username would switch to that username's account with an environment that you would expect to see when you logged in as that user.
Commands | Meaning |
sudo su | Switch to the superuser account. |
sudo su - | Switch to the superuser account with root's environment. |
sudo su - username | Switch to the username's account with the username's environment. |
Another way to switch to another account with sudo is to use the -s option. If you run sudo -s that will start a shell as root. You can specify a user with the -u option.
Commands | Meaning |
sudo -s | Start a shell as root |
sudo -u root -s | Same as above. |
sudo -u user -s | Start a shell as user. |
Exemple 1 : Quelle commande exécuter avec sudo.
Vous pouvez exécuter ce qui suit pour voir quelle commande peut être exécutée avec sudo :
$ sudo -l
Matching Defaults entries for robin on robin-ThinkPad-T410:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User robin may run the following commands on robin-ThinkPad-T410:
(ALL : ALL) ALL
Dans ce cas, l'utilisateur robin peut exécuter n'importe quelle commande.
Exemple 2 : Exécution d'une commande avec sudo
Exécution d'une commande avec sudo
$ sudo /etc/mongodb start
mongodb started
Exemple 3 : Exécuter une commande en tant qu'autre utilisateur
Pour exécuter une commande en tant qu'autre utilisateur :
$ sudo -u nikki /etc/nikkiapp/bin/start
Nikki's app started
Running as user: nikki
Exemple 4 : Passage au compte root
Pour passer au compte root :
$ sudo -s
$ whoami
root
Si vous devez modifier la configuration de sudo, utilisez la commande visudo. Elle lance effectivement l'éditeur vi et modifie le fichier /etc/sudoers. La commande visudo doit être exécutée avec des privilèges approuvés. Cela signifie que vous devez passer au compte root, par exemple : su root visudo ou exécuter sudo visudo avec votre propre compte.
Le fichier sudoers contient une liste d'utilisateurs, et les commandes que ces utilisateurs peuvent exécuter et en tant que quels utilisateurs ces commandes peuvent être exécutées.
Il existe de nombreuses options pour le fichier sudoers, mais le format le plus simple et celui que vous verrez assez souvent est une ligne qui donne à un utilisateur spécifique un ensemble de commandes qu'il ou elle peut exécuter. Le format est le suivant
user host=(users) [NOPASSWORD:]commands
Voici deux exemples :
admin ALL=(ALL) NOPASSWORD:ALL
robin servername=(root) /etc/init.d/apps
Une autre façon de changer d'utilisateur est d'utiliser la commande su. Les détails de su sont couverts dans su command.